package beans;

import java.util.Collection;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import dao.FinanciamientoDao;
import dao.ProyectoDao;
import excepciones.DaoException;
import modelo.Financiamiento;
import modelo.Proyecto;

@ManagedBean
@SessionScoped
public class ListFinanciamientosBean {

	@ManagedProperty(value="#{listProyectosBean}")
	private ListProyectosBean listProyectosBean;

	private Long financiamientoId;
	private Long selected;
	private Proyecto proyecto;
	private ProyectoDao proyectoDao;
	private List<Financiamiento> financiamientos;
	
	@PostConstruct
	public void init(){		
		// Financiamientos del proyecto
		this.proyectoDao = new ProyectoDao();
		try {
			this.proyecto = proyectoDao.findById(this.getListProyectosBean().getSelected());
			this.setFinanciamientos((List<Financiamiento>) this.getProyecto().getMis_financiamientos());
		} catch (DaoException e) {			
			e.printStackTrace();
		}
	}

	public String detalleFinanciamiento()
	{ // Mostrar detalle financiamiento
		setFinanciamientoId(this.selected);
		return "irDetalleFinanciamiento";
	}
	
	public String nuevo(){
		
		setFinanciamientoId(null);
		setSelected(null);
		return "irDetalleFinanciamiento";
	}
	
	public String eliminarFinanciamiento(){
		FinanciamientoDao finanDao = new FinanciamientoDao();
		Financiamiento fina = null;
		try {
			fina = (Financiamiento) finanDao.findById(this.getSelected());
		} catch (DaoException e) {
			e.printStackTrace();
		}
		/* TODO: NO ACTUALIZA EL PROYETO */
		Collection<Financiamiento> misFinan = this.proyecto.getMis_financiamientos();
		misFinan.remove(fina);
		ProyectoDao proDao = new ProyectoDao(this.proyecto);
		this.proyecto.setMis_financiamientos(misFinan);
		
		try {
			proDao.update();
			//this.proyectoDao.create();
		} catch (DaoException e) {
			e.printStackTrace();
		}
		proDao.closeEntityManager();
			
		return "irListFinanciamiento";
	}
	
	public String volver(){
		return "irEditarProyectos";
	}
	
	public Proyecto getProyecto() {
		return proyecto;
	}

	public void setProyecto(Proyecto proyecto) {
		this.proyecto = proyecto;
	}

	public Long getSelected() {
		return selected;
	}

	public void setSelected(Long selected) {
		this.selected = selected;
	}

	public Long getFinanciamientoId() {
		return financiamientoId;
	}

	public void setFinanciamientoId(Long financiamientoId) {
		this.financiamientoId = financiamientoId;
	}

	public List<Financiamiento> getFinanciamientos() {
		return financiamientos;
	}

	public void setFinanciamientos(List<Financiamiento> financiamientos) {
		this.financiamientos = financiamientos;
	}

	public ListProyectosBean getListProyectosBean() {
		return listProyectosBean;
	}

	public void setListProyectosBean(ListProyectosBean listProyectosBean) {
		this.listProyectosBean = listProyectosBean;
	}

	public ProyectoDao getProyectoDao() {
		return proyectoDao;
	}

	public void setProyectoDao(ProyectoDao proyectoDao) {
		this.proyectoDao = proyectoDao;
	}
			
}